/**
 * 缓存配置模块
 * 整合了缓存类型枚举、基础配置、缓存策略配置和工具函数
 */

module.exports = {
    // 缓存类型：memory 或 redis
    type: process.env.CACHE_TYPE || 'memory',
    // 缓存键前缀
    keyPrefix: 'pc',
    // 内存缓存配置
    memory: {
        maxItems: 1000,
        useLRU: true,
        checkInterval: 60000
    },
    // 缓存策略
    strategies: {
        defaults: {
            ttl: 3600,
            useRedis: true,
            warmable: false,
            version: 'v1',
            enabled: true
        },
        // 用户相关缓存策略
        user: {
            item: { ttl: 3600, useRedis: true, warmable: true },
            permissions: { ttl: 7200, useRedis: true },
            roles: { ttl: 7200, useRedis: true },
            stats: { ttl: 300, useRedis: true },
            ttl: 1800,
            enabled: true
        },

        // 权限相关缓存策略
        permission: {
            list: { ttl: 7200, useRedis: true, warmable: true },
            codes: { ttl: 7200, useRedis: true },
            tree: { ttl: 3600, useRedis: true }
        },

        // 配置缓存策略 - 合并两套配置
        config: {
            system: { ttl: 14400, useRedis: true, warmable: true },
            app: { ttl: 86400, useRedis: true, warmable: true },
            ttl: 7200,
            enabled: true
        },

        // 验证码缓存策略
        captcha: { ttl: 300, useRedis: true, warmable: false, enabled: true },

        // 临时缓存策略
        temporary: { ttl: 60, useRedis: false, warmable: false, enabled: true },

        // 角色相关缓存策略
        role: {
            item: { ttl: 3600, useRedis: true, warmable: true },
            list: { ttl: 1800, useRedis: true },
            permissions: { ttl: 7200, useRedis: true }
        },

        // 菜单相关缓存策略
        menu: {
            list: { ttl: 7200, useRedis: true, warmable: true },
            tree: { ttl: 3600, useRedis: true, warmable: true }
        },

        // 部门相关缓存策略
        department: {
            item: { ttl: 3600, useRedis: true, warmable: true },
            tree: { ttl: 1800, useRedis: true, warmable: true },
            stats: { ttl: 300, useRedis: true }
        },

        // 监控相关缓存策略
        monitor: {
            system: { ttl: 60, useRedis: false },
            user: { ttl: 300, useRedis: true },
            error: { ttl: 300, useRedis: true }
        },

        // 短期和长期缓存策略
        shortTerm: { ttl: 60, useRedis: false },
        longTerm: { ttl: 86400, useRedis: true }
    }
};